/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.commons.net.ftp.parser; import java.util.ArrayList; import java.util.List; import junit.framework.TestSuite; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPFileEntryParser; /** * Changed on August 31, 2006<br/> * Test suite addapted to new MVSFTPEntryParser.java. * @author <a href="mailto:henrik.sorensen@balcab.ch">Henrik Sorensen</a> * * Created on Apr 6, 2005<br/> * @author <a href="mailto:wnoto@openfinance.com">William Noto</a> * @version $Id: MVSFTPEntryParserTest.java,v 1.16 2005/01/02 03:17:50 scohen Exp $ */ public class MVSFTPEntryParserTest extends FTPParseTestFramework { private static final String[] goodsamplesDatasetList = { /* Note, if the string begins with SAVE, the parsed entry is stored in the List saveftpfiles */ // "Volume Unit Referred Ext Used Recfm Lrecl BlkSz Dsorg Dsname", "SAVE00 3390 2004/06/23 1 1 FB 128 6144 PS INCOMING.RPTBM023.D061704", "SAVE01 3390 2004/06/23 1 1 FB 128 6144 PO INCOMING.RPTBM024.D061704", "SAVE02 3390 2004/06/23 1 1 FB 128 6144 PO-E INCOMING.RPTBM025.D061704", "PSMLC1 3390 2005/04/04 1 1 VB 27994 27998 PS file3.I", "PSMLB9 3390 2005/04/04 1 1 VB 27994 27998 PS file4.I.BU", "PSMLB6 3390 2005/04/05 1 1 VB 27994 27998 PS file3.I.BU", "PSMLC6 3390 2005/04/05 1 1 VB 27994 27998 PS file6.I", "PSMLB7 3390 2005/04/04 1 1 VB 27994 27998 PS file7.O", "PSMLC6 3390 2005/04/05 1 1 VB 27994 27998 PS file7.O.BU", "FPFS49 3390 2004/06/23 1 1 FB 128 6144 PO-E INCOMING.RPTBM026.D061704", "FPFS41 3390 2004/06/23 1 1 FB 128 6144 PS INCOMING.RPTBM056.D061704", "FPFS25 3390 2004/06/23 1 1 FB 128 6144 PS INCOMING.WTM204.D061704", }; private static final String[] goodsamplesMemberList = {/* Note, if the string begins with SAVE, the parsed entry is stored in the List saveftpfiles */ "Name VV.MM Created Changed Size Init Mod Id", "SAVE03 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001", "SAVE04 ", // no statistics "TBSHELF1 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001", "TBSHELF2 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001", "TBSHELF3 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001", "TBSHELF4 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001", }; private static final String[] goodsamplesJES1List = { /* no header for JES1 (JES Interface level 1) */ /* Note, if the string begins with SAVE, the parsed entry is stored in the List saveftpfiles */ "IBMUSER1 JOB01906 OUTPUT 3 Spool Files", }; private static final String[] goodsamplesJES2List = { /* JES2 (JES Interface level 2) */ /* Note, if the string begins with SAVE, the parsed entry is stored in the List saveftpfiles */ //"JOBNAME JOBID OWNER STATUS CLASS", "IBMUSER2 JOB01906 IBMUSER OUTPUT A RC=0000 3 spool files", "IBMUSER TSU01830 IBMUSER OUTPUT TSU ABEND=522 3 spool files", }; private static final String[] badsamples = { "MigratedP201.$FTXPBI1.$CF2ITB.$AAB0402.I", "PSMLC133902005/04/041VB2799427998PSfile1.I", "file2.O", }; /** * @see junit.framework.TestCase#TestCase(String) */ public MVSFTPEntryParserTest(String name) { super(name); } /* (non-Javadoc) * @see org.apache.commons.net.ftp.parser.CompositeFTPParseTestFramework#getBadListings() */ @Override protected String[] getBadListing() { return badsamples; } /* (non-Javadoc) * @see org.apache.commons.net.ftp.parser.CompositeFTPParseTestFramework#getGoodListings() */ @Override protected String[] getGoodListing() { return goodsamplesDatasetList; } /** * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getAllGoodListings() */ protected List<String[]> getAllGoodListings() { List<String[]> l = new ArrayList<String[]>(); l.add(goodsamplesDatasetList); l.add(goodsamplesMemberList); l.add(goodsamplesJES1List); l.add(goodsamplesJES2List); return l; } /** * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#getParser() */ @Override protected FTPFileEntryParser getParser() { return new MVSFTPEntryParser(); } /** * Method suite. * * @return TestSuite */ public static TestSuite suite() { return (new TestSuite(MVSFTPEntryParserTest.class)); } /* * note the testGoodListing has to be the first test invoked, because * some FTPFile entries are saved for the later tests * * (non-Javadoc) * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testGoodListing() */ @Override public void testGoodListing() throws Exception { String[] goodsamples = getGoodListing(); MVSFTPEntryParser parser = new MVSFTPEntryParser(); parser.setType(MVSFTPEntryParser.FILE_LIST_TYPE); parser.setRegex(MVSFTPEntryParser.FILE_LIST_REGEX); for (String test : goodsamples) { FTPFile f = parser.parseFTPEntry(test); assertNotNull("Failed to parse " + test, f); doAdditionalGoodTests(test, f); } } public void testMemberListing() throws Exception { MVSFTPEntryParser parser = new MVSFTPEntryParser(); parser.setType(MVSFTPEntryParser.MEMBER_LIST_TYPE); parser.setRegex(MVSFTPEntryParser.MEMBER_LIST_REGEX); for (String test : goodsamplesMemberList) { FTPFile f = parser.parseFTPEntry(test); assertNotNull("Failed to parse " + test, f); doAdditionalGoodTests(test, f); } } public void testJesLevel1Listing() { MVSFTPEntryParser parser = new MVSFTPEntryParser(); parser.setType(MVSFTPEntryParser.JES_LEVEL_1_LIST_TYPE); parser.setRegex(MVSFTPEntryParser.JES_LEVEL_1_LIST_REGEX); for (String test : goodsamplesJES1List) { FTPFile f = parser.parseFTPEntry(test); assertNotNull("Failed to parse " + test, f); doAdditionalGoodTests(test, f); } } public void testJesLevel2Listing() { MVSFTPEntryParser parser = new MVSFTPEntryParser(); parser.setType(MVSFTPEntryParser.JES_LEVEL_2_LIST_TYPE); parser.setRegex(MVSFTPEntryParser.JES_LEVEL_2_LIST_REGEX); for (String test : goodsamplesJES2List) { FTPFile f = parser.parseFTPEntry(test); assertNotNull("Failed to parse " + test, f); doAdditionalGoodTests(test, f); } } @Override public void testParseFieldsOnDirectory() throws Exception { MVSFTPEntryParser parser = new MVSFTPEntryParser(); parser.setType(MVSFTPEntryParser.FILE_LIST_TYPE); parser.setRegex(MVSFTPEntryParser.FILE_LIST_REGEX); FTPFile file = parser .parseFTPEntry("SAVE01 3390 2004/06/23 1 1 FB 128 6144 PO INCOMING.RPTBM024.D061704"); assertNotNull("Could not parse entry.", file); assertTrue("Should have been a directory.", file.isDirectory()); assertEquals("INCOMING.RPTBM024.D061704", file.getName()); file = parser .parseFTPEntry("SAVE02 3390 2004/06/23 1 1 FB 128 6144 PO-E INCOMING.RPTBM025.D061704"); assertNotNull("Could not parse entry.", file); assertTrue("Should have been a directory.", file.isDirectory()); assertEquals("INCOMING.RPTBM025.D061704", file.getName()); } /* (non-Javadoc) * @see org.apache.commons.net.ftp.parser.FTPParseTestFramework#testParseFieldsOnFile() */ @Override public void testParseFieldsOnFile() throws Exception { FTPFile file = null; MVSFTPEntryParser parser = new MVSFTPEntryParser(); parser.setRegex(MVSFTPEntryParser.FILE_LIST_REGEX); parser.setType(MVSFTPEntryParser.FILE_LIST_TYPE); file = parser.parseFTPEntry("SAVE00 3390 2004/06/23 1 1 FB 128 6144 PS INCOMING.RPTBM023.D061704"); assertNotNull("Could not parse entry.", file); assertTrue("Should have been a file.", file.isFile()); assertEquals("INCOMING.RPTBM023.D061704", file.getName()); assertNull("Timestamp should not have been set.", file.getTimestamp()); parser.setType(MVSFTPEntryParser.MEMBER_LIST_TYPE); parser.setRegex(MVSFTPEntryParser.MEMBER_LIST_REGEX); file = parser.parseFTPEntry("SAVE03 01.03 2002/09/12 2002/10/11 09:37 11 11 0 KIL001"); assertNotNull("Could not parse entry.", file); assertTrue("Should have been a file.", file.isFile()); assertEquals("SAVE03", file.getName()); assertNotNull("Timestamp should have been set.", file.getTimestamp()); file = parser.parseFTPEntry("SAVE04 "); assertNotNull("Could not parse entry.", file); assertTrue("Should have been a file.", file.isFile()); assertEquals("SAVE04", file.getName()); assertNull("Timestamp should not have been set.", file.getTimestamp()); } }